Regression testing involves the repetition of tests developed for a system for the purpose of ensuring correct system behavior and uncovering any software bugs or regressions in existing functional and non-functional areas of the system. Typically, regression testing is performed after changes, such as enhancements, patches, or configuration changes have been made to the system. The intent of regression testing is to ensure that the changes made to the system have not introduced new faults or bugs to the system. Regression testing can be used to not only test for the correctness of a program, but also for tracking the quality of its output.
When developing regression tests for a client/server system, testing the server APIs (application programming interfaces) constitutes a significant part. Test clients are programmed to interact with the server and check responses received from the server. However, manually developing test clients is a tedious task requiring people with profound knowledge of the server APIs and significant programming skills.